
// 导入用户集合构造函数
const { User } = require('../../model/user');
// 导入 bcrypt
const bcrypt = require('bcrypt');
//async 异步函数
const login = async (req, res) => {
    //接受请求参数
    //    res.send(req.body)
    // 服务端表单验证
    //接受客服端传递的email 和Password
    const {email,password} = req.body;

    if (email.trim().length == 0 || password.trim().length == 0) {  //判断密码   后端验证
        return res.status(400).send('<h4>邮件或密码错误</h4>')
        return res.status(400).render('admin/error',{msg:'服务器提示：邮件或密码错误,3秒后返回登录界面'})
    }

    //根据邮箱地址查询用户信息
    let user = await User.findOne( {email} )
    //查询到user
    if (user) {
        //验证密码 
        //将客户端传递过来的密码和用户信息中的密码进行比对
        let isValid = await bcrypt.compare(password,user.password)
        if (isValid) {
            //登录成功
            //将用户名存储在请求对象中
            req.session.username = user.username;
            //将用户角色存储到session对象中
            req.session.role = user.role;
            //登录成功，把user 存到userInfo里面
            req.app.locals.userInfo = user;
           //对用户角色进行判断
           if(user.role == 'admin'){
               // 重定向到用户列表
            res.redirect('/admin/user')
           }else{
               //重定向到博客首页
               res.redirect('/home/')
           }
        } else {
            //密码错误
            res.send('密码错误');
        }
    } else {
        //没有查到用户
        res.status(400).render('admin/error', {
            msg: '此用户不存在'
        })
    }
}

module.exports = login